import cv2
import numpy as np
# 1. 图片输入
image_np = cv2.imread('3.jpg')
# 2. HSV空间转换
hsv_image_np = cv2.cvtColor(image_np, cv2.COLOR_BGR2HSV)
# 3. 制作掩膜
# 第一块红色范围的上下限
red_low = np.array([0, 43, 46])
red_high = np.array([10, 255, 255])
# 制作掩膜1
mask1 = cv2.inRange(
    hsv_image_np, # 基于哪个图像
    red_low, # 下限
    red_high # 上限
)
# 第一块红色范围的上下限
red_low = np.array([156, 43, 46])
red_high = np.array([180, 255, 255])
# 制作掩膜1
mask2 = cv2.inRange(
    hsv_image_np, # 基于哪个图像
    red_low, # 下限
    red_high # 上限
)
# 合二为一：位或
mask_image_np = cv2.bitwise_or(mask1, mask2)
# 4. 与运算
# 注意参数，前两个参数放原图，第三个参数给参数名称送掩膜
color_image_np = cv2.bitwise_and(image_np, image_np, mask=mask_image_np)
# 5. 图像输出
cv2.imshow('mask1', mask1)
cv2.imshow('mask2', mask2)
cv2.imshow('mask_image_np', mask_image_np)
cv2.imshow('color_image_np', color_image_np)
cv2.waitKey(0)